/*
描述
原理：ip地址的每段可以看成是一个0-255的整数，把每段拆分成一个二进制形式组合起来，然后把这个二进制数转变成
一个长整数。
举例：一个ip地址为10.0.3.193
每段数字             相对应的二进制数
10                   00001010
0                    00000000
3                    00000011
193                  11000001

组合起来即为：00001010 00000000 00000011 11000001,转换为10进制数就是：167773121，即该IP地址转换后的数字就是它了。

数据范围：保证输入的是合法的 IP 序列

输入描述：
输入 
1 输入IP地址
2 输入10进制型的IP地址

输出描述：
输出
1 输出转换成10进制的IP地址
2 输出转换后的IP地址
*/


// 此类10 进制和2进制的转化就好好的利用到c语言的优点， 有左移 和右移可以完美的转化，此外16进制用%x  10：%d 输出也可以转化数值
#include <stdio.h>
int main(void)
{
    int a,b,c,d;
    unsigned int n1,n2;
    while(scanf_s("%d.%d.%d.%d",&a,&b,&c,&d) != EOF)
    {
        scanf_s("%u",&n1);
        // 每段数据有8位，如果是长报文，可能不止4段
        n2 = (a<<24)+(b<<16)+(c<<8)+d;
        printf("%u\n",n2);
        a=(n1>>24);         // 删除左边24位二进制数
        b=(n1>>16)&255;     // 删除左边16位二进制数，然后 与上255，即可删除右边8位以外的数据
        c=(n1>>8)&255;
        d=n1&255;
        printf("%d.%d.%d.%d\n",a,b,c,d);
    }
}
